package net.jumpengine.util;

import net.jumpengine.bean.Base;

/**
 * 碰撞工具类
 * <br /><br />
 * <b>作者:&nbsp;</b>张天文 <br />
 * <b>日期:&nbsp;</b>2020年2月24日 下午7:39:58<br />
 * @date
 */
public class UCollision {
	
	/**
	 * 检测点是否在线段上
	 * @param x 点的x坐标
	 * @param y 点的y坐标
	 * @param x1 一个端点的x坐标
	 * @param y1 一个端点的y坐标
	 * @param x2 另一个端点的x坐标
	 * @param y2 另一个端点的y坐标
	 * @return true-点在线段上
	 */
	public static boolean inLine(int x,int y,int x1,int y1,int x2,int y2) {
		int val=(x1-x)*(y2-y)-(x2-x)*(y1-y);
		int min=Math.min(x1, x2),max=Math.max(x1, x2);
		boolean xIn=x>=min && x<=max;
		min=Math.min(y1, y2);
		max=Math.max(y1, y2);
		boolean yIn=y>=min && y<=max;
		return val==0 && xIn && yIn;
	}
	
	/**
	 * 检测点是否在矩形内
	 * @param x 点的x坐标
	 * @param y 点的y坐标
	 * @param x1 矩形左上角x坐标
	 * @param y1 矩形左上角y坐标
	 * @param width 宽度
	 * @param height 高度
	 * @return true-点在矩形内
	 */
	public static boolean inBox(int x,int y,int x1,int y1,int width,int height) {
		return x>=x1 && x<=x1+width && y>=y1 && y<=y1+height;
	}
	
	/**
	 * 检测点是否在Base内
	 * @param x 点的x坐标
	 * @param y 点的y坐标
	 * @param base 有坐标与尺寸的Base
	 * @return true-点在矩形内
	 */
	public static boolean inBox(int x,int y,Base base) {
		return inBox(x, y, base.getX(), base.getY(), base.getWidth(), base.getHeight());
	}
}
